<?php
/**
 * @package   auto_occasion
 * @subpackage 
 * @author    CMS
 * @copyright  2011
 * @license    All rights reserved
 */

class modeleSrv {

    /**
     * Fonction permettant d'avoir une modele par son id
     * @return object
     */
    public static function getById ($_iId) {
       $oFac = jDao::get("commun~ao_modele");
     
       return $oFac->get($_iId);
    }

    /**
     * Fonction permettant d'avoir la liste des modeles
     * @return object
     */
    public static function getAll () {
       $oFac = jDao::get("commun~ao_modele");

       return $oFac->findAll()->fetchAll();
    }

    /**
     * Fonction permettant de supprimer une modele
     * @return object
     */
    public static function deleteById ($_iId) {
       $oFac = jDao::get("commun~ao_modele");
     
       return $oFac->delete($_iId);
    }


      /**
     * Fonction pour avoir une requ?te d'ajout de modèle dans table equipement choix 
     * @param array $_toParams
     * @param int $idMarque
     * @param array $idChoix
    */
    public static function insertModele($_toParams, $idMarque){

        $sql = "INSERT INTO ao_modele (modele_marque,modele_libelle,modele_motCle) VALUES ";
        $k = 0;
        foreach ($_toParams as $item) {
            $libelle = str_replace("'",'',$item);
            $motCle =  strtolower(str_replace("'",'',$item));
            $sep = (!$k)? "" : ",";
            $sql .= $sep . "(".$idMarque.",'".$libelle."','".$motCle."')";
            $k++;
        }
        
         $cnx = jDb::getConnection();
         return $cnx->exec($sql);
    }
    
    /**
     * Renvoie tous les fiches d'une Categorie
     * @param int $_iTypeId
     * @return array 
     */
    public static function getAllByOrder () {
        
        $oFac = jDao::get('commun~ao_modele') ;
        $oCond = jDao::createConditions() ;
        $oCond->addItemOrder('modele_ordre') ;
        
        return $oFac->findBy($oCond) ;
    }
    
    /**
     * Renvoie de facon ordonée tous les modeles d'une marque suivant 
     *
     * @param int $_iMarqueId
     * @return array 
     */
    public static function getAllOrderedModeleByMarqueId ($_iMarqueId) {
        
        $oFac = jDao::get('commun~ao_modele') ;
        $oCond = jDao::createConditions() ;
        $oCond->addCondition('modele_marque', '=', (int)$_iMarqueId) ;
        $oCond->addItemOrder('modele_ordre') ;
        $res = $oFac->findBy($oCond)->fetchAll() ;
        
        
        return $oFac->findBy($oCond)->fetchAll() ;
    }

	//fonction permettant de charger tous les modeles d'une marque
	public static function getAllModeleByMarqueId($_iMarqueId) {
	
		$zQuery			= " SELECT * FROM ao_modele WHERE modele_marque = $_iMarqueId ORDER BY modele_libelle ASC ";
		$oConnexion		= jDb::getConnection();
		$oResultat		= $oConnexion->query($zQuery);

		return $oResultat->fetchAll();
	
	}

    /**
     * Fonction pour ajouter un modèle
     * @param object $_formule
     */
    public function getModeleParams($_params){
        
       $choix = array();
       foreach($_params as $k=>$val){
           if(preg_match("/textbox/i",$k) && $k){       
             array_push($choix,"'".$val."'");
           }
       }
       return $choix;
    }

    /**
     * Fonction pour ajouter un modèle
     * @param object $_formule
     */
   
    public function getModeleDejaEnBase($_params){

        $size =  sizeof($_params);

        $oFac = jDao::get('commun~ao_modele') ;
        
        $oCond = jDao::createConditions() ;
        $oCond->addCondition('modele_libelle','IN',implode(',',$_params));
          
        //$oCond->addItemOrder('modele_ordre') ;
        $ret = array();
        $res = $oFac->findBy($oCond,0, $size);
        while ($row = $res->fetch()) {
            $modele = new stdClass();
            $modele->name = $row->modele_libelle;
            $modele->id = $row->modele_id;
            $ret [] = $modele;
        }

        return $ret;

    }

    /**
    * Fonction permettant d' inserer les choix d'un ?quipements
    */

    public function getIdsModele($modeles){
        $sql = "SELECT modele_id FROM ao_modele WHERE modele_libelle IN (" . $modeles . ")";
       
        $jdb = jDb::getDbWidget();
        $res = array();
        $row = $jdb->fetchAll($sql);
            foreach ($row as $item){
                $res[] = $item->modele_id;
            }
        
        return $res;

    }

    /**
    * Fonction permettant modele dans table ao_modele
    */

    public function insertMarqueModele($idMarque, $idModele){
        $cnx = jDb::getConnection();
        jClasses::inc("commun~common");
        $query = " INSERT INTO ao_modele (modele_marque,modele_id,modele_libelle,modele_motCle) VALUES";
        //$query = " INSERT INTO ao_marque_modele (marque_id,modele_id) VALUES ";
        $count = 0;
        foreach ($idModele as $k=>$item) {
                $objMod = common::chargeParId($item->id, 'ao_modele');
                if (!$objMod->modele_id) {
                    $count++;
                    // duplicate id in modele stop
                
                    $libelle = str_replace("'",'',$item->name);
                    $motCle =  strtolower(str_replace("'",'',$item->name));
                    $sep = (!$k)? "" : ",";
                    $query.= $sep . "(".$idMarque.",'".$item->id."','".$libelle."','".$motCle."')";
                }
            }
        if ($count) 
            return $cnx->exec($query);
        else
            return true;

    }


     /**
     * Modifie l'ordre de modèle 
     * @param array $_toParams
     * @return array 
     */
    public static function reOrder ($_toParams) {
        
//        $oFac = jDao::get('commun~ao_marque_modele') ;
        $oFac = jDao::get('commun~ao_modele') ;
        
        $tiModeleIds = array_key_exists('tiModeleIds', $_toParams) ? $_toParams['tiModeleIds'] : array() ;
        
        foreach ($tiModeleIds as $iKey => $iModeleId) {
            $oRec = $oFac->get($iModeleId) ;
//            $oRec->pos = $iKey ;
            $oRec->modele_ordre = $iKey ;
            $oFac->update($oRec) ;
        }
        
    }

}